package com.ruoyi.delivery.service;

import com.ruoyi.delivery.domain.DelVehicle;
import com.ruoyi.delivery.domain.dto.Monitor;

import java.util.List;

public interface IDelVehicleService {

    /**
     * 获取车辆信息列表，支持分页和筛选
     *
     * @param vehiclePerson 车辆负责人
     * @param vehicleType   车辆类型
     * @param capacity      容量
     * @param startDate     创建时间开始范围
     * @param endDate       创建时间结束范围
     * @param activeStatus  生效状态
     * @param page          页码
     * @param pageSize      每页记录数
     * @return 车辆信息列表
     */
    List<DelVehicle> getVehicleList(String vehicleNo, String vehiclePerson, String vehicleType, Double capacity,
                                    String startDate, String endDate, Boolean activeStatus,
                                    int page, int pageSize, String logisticsDeliver);

    /**
     * 获取车辆信息总记录数
     *
     * @param vehiclePerson 车辆负责人
     * @param vehicleType   车辆类型
     * @param capacity      容量
     * @param startDate     创建时间开始范围
     * @param endDate       创建时间结束范围
     * @param activeStatus  生效状态
     * @return 总记录数
     */
    int getVehicleCount(String vehicleNo,String vehiclePerson, String vehicleType, Double capacity,
                        String startDate, String endDate, Boolean activeStatus, String logisticsDeliver);

    /**
     * 新建车辆信息
     *
     * @param vehicle 车辆信息对象
     */
    void insertVehicleInfo(DelVehicle vehicle);

    /**
     * 更新车辆信息
     *
     * @param vehicle 车辆信息对象
     */
    void updateVehicleInfo(DelVehicle vehicle);

    /**
     * 删除车辆信息
     *
     * @param vehicleNo 车辆编号
     */
    void deleteVehicle(String vehicleNo);

    /**
     * 批量删除车辆信息
     *
     * @param vehicleNos 车辆编号列表
     */
    void deleteVehicles(List<String> vehicleNos);

    /**
     * 获取车辆位置信息
     *
     * @param logisticsDeliver 物流商编号
     * @return 车辆位置信息
     */
    List<Monitor> getVehicleLocation(String logisticsDeliver);

    /**
     * 获取车辆信息
     *
     * @param logisticsDeliver 物流商编号
     * @return 车辆信息
     */
    List<DelVehicle> getVehicleInfo(String logisticsDeliver);


}
